// 导入工具包
import tools from '@/tools'

/**
 * @functionName 密码校验
 * @author 赵致喜
 * @date 2020-04-21 11:13:56
 * @version V1.0.0
 */

/**
 * @functionName  isPassword
 * @param {String} value 被验证数据
 * @return {Object} 返回结果
 * @description 验证数据是否为空
 * @author 赵致喜
 * @date 2020-04-21 11:44:23
 * @version V1.0.0
 */

const isPassword = (value) => {
  const resultObj = tools.resultObj(
    { value },
    false,
    '密码不能为空'
  )
  if (value !== '') {
    resultObj.result = true
    resultObj.message = '校验成功！'
    return resultObj
  }
  return resultObj
}

/**
 * @functionName  passwordLengthValidation
 * @param {String} value 被验证数据
 * @return {Object} 返回结果
 * @description 只校验密码长度不小于8位
 * @author 赵致喜
 * @date 2020-04-21 11:14:30
 * @version V1.0.0
 */

export const passwordLengthValidation = (value = '') => {
  const passwordType = isPassword(value)
  if (!passwordType.result) return passwordType
  const resultObj = tools.resultObj(
    { value },
    false,
    '密码长度不能小于8位'
  )
  if (value.length >= 8) {
    resultObj.result = true
    resultObj.message = '校验成功！'
    return resultObj
  }
  return resultObj
}

/**
 * @functionName  passwordMiddleValidation
 * @param {String} value 被验证数据
 * @return {Object} 返回结果
 * @description 验证密码(大小写字母、数字、符号任意两种，并且不小于8位)
 * @author 赵致喜
 * @date 2020-04-21 11:56:04
 * @version V1.0.0
 */

export const passwordMiddleValidation = (value = '') => {
  const passwordType = isPassword(value)
  if (!passwordType.result) return passwordType
  const reg = /^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$/
  const resultObj = tools.resultObj(
    { value },
    false,
    '密码长度不能小于8位,并且大小写字母、数字、符号任意两种'
  )
  if (reg.test(value) && value.length >= 8) {
    resultObj.result = true
    resultObj.message = '校验成功！'
    return resultObj
  }
  return resultObj
}

/**
* @functionName  passwordSeniorValidation
* @param {String} value 被验证数据
* @return {Object} 返回结果
* @description 验证密码(大小写字母、数字、符号三种同时存在，并且不小于8位)
* @author 赵致喜
* @date 2020-04-21 13:56:04
* @version V1.0.0
*/

export const passwordSeniorValidation = (value = '') => {
  const passwordType = isPassword(value)
  if (!passwordType.result) return passwordType
  const reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]/
  const resultObj = tools.resultObj(
    { value },
    false,
    '密码长度不能小于8位,并且大小写字母、数字、符号三种同时存在'
  )
  console.log(reg.test(value))
  if (reg.test(value) && value.length >= 8) {
    resultObj.result = true
    resultObj.message = '校验成功！'
    return resultObj
  }
  return resultObj
} 
